home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / jpeglibrary / includes / jpeg / jpeg.h < prev   
C/C++ Source or Header  |  1998-05-26  |  5KB  |  129 lines

  1. #ifndef JPEG_H
  2. #define JPEG_H
  3.  
  4. /*
  5. **    $VER: jpeg.h 1.0 (2.5.98)
  6. **
  7. **    Public structures and defintions for jpeg.library.
  8. **
  9. **    © Paul Huxham
  10. **
  11. **    This software is based in part on the work of
  12. **    the Independent JPEG Group.
  13. */
  14.  
  15. #ifndef EXEC_TYPES_H
  16. #include "exec/types.h"
  17. #endif
  18.  
  19. #ifndef DOS_DOS_H
  20. #include <dos/dos.h>
  21. #endif
  22.  
  23. #ifndef UTILITY_TAGITEM_H
  24. #include <utility/tagitem.h>
  25. #endif
  26.  
  27. /* Used for JPEG decompression */
  28. struct JPEGDecHandle
  29. {
  30.     ULONG ptr; // Private!
  31. };
  32.  
  33. /* Used for JPEG compression */
  34. struct JPEGComHandle
  35. {
  36.     ULONG ptr; // Private!
  37. };
  38.  
  39. /*========================================================================*/
  40. /* The decompress hook is called once for each scanline in the image.
  41.         a0 contains a UBYTE pointer to the scanline to copy
  42.         d0 contains a ULONG with the scanline number of this data (1 being
  43.                 first scanline)
  44.         d1 contains a ULONG with the number of bytes in this row
  45.         a1 contains the userdata
  46.  
  47.     If the hook returns a non NULL value, the decoding will be aborted -
  48.     You should NOT call any functions other than FreeJPEGDecompress() on
  49.     that jpeg object.
  50. */
  51.  
  52. typedef ULONG (*JPGD_HOOK)( void *, ULONG, ULONG, void * );
  53. typedef __asm ULONG (*JPGD_HOOK_PROTO)( register __a0 void *, register __d0 ULONG, register __d1 ULONG, register __a1 void * );
  54.  
  55. /* The compress hook is called once for each scanline in the image.
  56.         a0 contains a UBYTE **. Copy into here (*ptr=) the pointer to the image
  57.         d0 contains a ULONG with the scanline number of the scanline I want
  58.         d1 contains a ULONG with the width of the image
  59.         a1 contains the userdata
  60.  
  61.     If the hook returns a non NULL value, the encoding will be aborted -
  62.     You should NOT call any functions other than FreeJPEGCompress() on
  63.     that jpeg object.
  64. */
  65.  
  66. typedef ULONG (*JPGC_HOOK)( UBYTE **,  ULONG, ULONG, void * );
  67. typedef __asm ULONG (*JPGC_HOOK_PROTO)( register __a0 UBYTE **, register __d0 ULONG, register __d1 ULONG, register __a1 void * );
  68.  
  69. /*========================================================================*/
  70. /* Colour space defines, from JPG_ColourSpace */
  71. enum
  72. {
  73.     JPCS_UNKNOWN, // Error/unspecified
  74.     JPCS_GRAYSCALE, // Monochrome
  75.     JPCS_RGB, // Red/green/blue
  76.     JPCS_YCbCr, // Y/Cb/Cr (also known as YUV)
  77.     JPCS_CMYK, // C/M/Y/K
  78.     JPCS_YCCK // Y/Cb/Cr/K
  79. };
  80.  
  81.  
  82. /*========================================================================*/
  83. /* Jpeg tagbase */
  84. #define JPG_TB ( TAG_USER + 0x80000 )
  85.  
  86. /* Jpeg tags */
  87. #define JPG_SrcMemStream JPG_TB + 1 /* Pointer to stream data in memory (UBYTE *) */
  88. #define JPG_SrcMemStreamSize JPG_TB + 2 /* Length in bytes of data stream (ULONG) */
  89. #define JPG_DestMemStream JPG_TB + 3 /* Pointer to a pointer to created data in memory (UBYTE **) */
  90. #define JPG_DestMemStreamSize JPG_TB + 4 /* Pointer to take size of created data (ULONG *) */
  91. #define JPG_SrcFile JPG_TB + 5 /* Pointer to an open file (BPTR) */
  92. #define JPG_DestFile JPG_TB + 6 /* Pointer to an open file (BPTR) */
  93. #define JPG_DestRGBBuffer JPG_TB + 7 /* Pointer to a memory block (UBYTE *) */
  94. #define JPG_DecompressHook JPG_TB + 8 /* Pointer to a function to store scan lines */
  95. #define JPG_DecompressUserData JPG_TB + 9 /* Pointer to user data (void *) */
  96. #define JPG_SrcRGBBuffer JPG_TB + 12 /* Pointer to a memory block (UBYTE *) */
  97. #define JPG_CompressHook JPG_TB + 13 /* Pointer to a function to store scan lines */
  98. #define JPG_CompressUserData JPG_TB + 14 /* Pointer to user data (void *) */
  99.  
  100. /* Jpeg tags affecting image size and quality */
  101. #define JPG_ScaleNum JPG_TB + 10 /* Numerator for scaling (ULONG) */
  102. #define JPG_ScaleDenom JPG_TB + 11 /* Denomenator for scaling (ULONG) */
  103. #define JPG_Width JPG_TB + 20 /* Width of image in pixels (ULONG *) */
  104. #define JPG_Height JPG_TB + 21 /* Height of image in pixels (ULONG *) */
  105. #define JPG_BytesPerPixel JPG_TB + 22 /* Number of bytes per image pixel (ULONG *) */
  106. #define JPG_RowSize JPG_TB + 23 /* Size of one row (ULONG *) [GET only] */
  107. #define JPG_ColourSpace JPG_TB + 24 /* Type of image data (UBYTE *) */
  108. #define JPG_Quality JPG_TB + 25 /* Save quality of jpeg (1-100) () */
  109. #define JPG_Smoothing JPG_TB + 26 /* Save smoothing amount (0-100) () */
  110.  
  111. /*========================================================================*/
  112. /* Defined error return codes */
  113. #define JPGERR_NONE 0 /* No error */
  114. #define JPGERR_NOMEMORY 1 /* Insufficient memory */
  115. #define JPGERR_NOHANDLE 2 /* No jpeg handle supplied */
  116. #define JPGERR_CREATEOBJECT 3 /* Failed to create JPEG object */
  117. #define JPGERR_DECOMPFAILURE 4 /* Failed to decompress */
  118. #define JPGERR_NOSRCSTREAM 5 /* No source stream to decode */
  119. #define JPGERR_NODESTBUFFER 6 /* No destination rgb buffer/hook */
  120. #define JPGERR_DECOMPABORTED 7 /* Decompression aborted by user hook */
  121. #define JPGERR_NODESTSTREAM 8 /* No destination stream pointers */
  122. #define JPGERR_COMPFAILURE 9 /* Failed to compress */
  123. #define JPGERR_COMPABORTED 10 /* Compression aborted by user hook */
  124. #define JPGERR_NOIMAGESIZE 11 /* No image size supplied */
  125. #define JPGERR_ALREADYDECOMP 12 /* Handle has already been decompressed */
  126. #define JPGERR_ALREADYCOMP 13 /* Handle has already been compressed */
  127.  
  128. #endif /* JPEG_H */
  129.